home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / ant / antenna2 / circular.bas < prev    next >
BASIC Source File  |  1986-08-13  |  4KB  |  134 lines

  1. 10 SCREEN 2,0:CLS:KEY OFF
  2. 20 '      JUNE 12, 1986
  3. 30 '      ARRAY FACTOR OF CIRCULAR ARRAY
  4. 40 '      AHMAD FAIZAL MOHD ZAIN
  5. 50 '
  6. 60 PRINT"          ARRAY FACTOR OF UNIFORM CIRCULAR ARRAY":PRINT:PRINT
  7. 70 DEF FN LOGTEN(X)=LOG(X)/LOG(10)
  8. 80 DIM AF(370),Y(400)
  9. 90 PI=3.141592:TWOPI=2*PI
  10. 100 PRINT"Specify main beam direction":PRINT
  11. 110 INPUT"DIRECTION IN THETA ";THE0
  12. 120 INPUT"DIRECTION IN PHI ";PHI0
  13. 130 INPUT"NUMBER OF ELEMENTS ";N
  14. 140 INPUT"RADIUS OF ARRAY ";A
  15. 150 TH=THE0*PI/180:PH=PHI0*PI/180
  16. 160 STHE0=SIN(TH):SPHI0=SIN(PH):CPHI0=COS(PH)
  17. 170 STP0=STHE0*SPHI0:CTP0=STHE0*CPHI0
  18. 180 P=0    'xz-plane
  19. 190 YMAX=0:YMIN=0
  20. 200 LOCATE 24,1:PRINT"Please wait...";
  21. 210 GOSUB 390
  22. 220 CLS
  23. 230 GOSUB 660
  24. 240 LOCATE 24,1
  25. 250 INPUT"Type return to continue";QQ
  26. 260 GOSUB 740
  27. 270 LOCATE 22,10:PRINT"Antenna pattern in xz-plane (PHI=0)"
  28. 280 LOCATE 23,1:PRINT"I'm doing yz-plane calculation.  Please wait...";
  29. 290 P=90   'yz-plane
  30. 300 YMAX=0:YMIN=0
  31. 310 GOSUB 390
  32. 320 LOCATE 23,1:PRINT"Type return to continue...                   ";:INPUT QQ
  33. 330 GOSUB 740
  34. 340 LOCATE 22,10:PRINT"Antenna pattern in yz-plane (PHI=90)"
  35. 350 GOSUB 1270
  36. 360 '
  37. 370 END
  38. 380 '
  39. 390   FOR THE=0 TO 360
  40. 400     TH=THE*PI/180
  41. 410     PHI=P*PI/180
  42. 420     REAL=0:IMAG=0
  43. 430     FOR I=1 TO N
  44. 440       STH=SIN(TH):SPHI=SIN(PHI)
  45. 450       CPHI=COS(PHI)
  46. 460       YY=STH*SPHI-STP0:XX=STH*CPHI-CTP0
  47. 470       IF XX>0 THEN EPSI=ATN(YY/XX)
  48. 480       IF XX<0 THEN EPSI=PI*SGN(YY)+ATN(YY/XX)
  49. 490       IF XX=0 THEN EPSI=(PI/2)*SGN(YY)
  50. 500       IF XX<0 AND YY=0 THEN EPSI=PI
  51. 510       RHO=A*SQR((STH*CPHI-CTP0)^2+(STH*SPHI-STP0)^2)
  52. 520       PHIN=TWOPI*I/N:CPE=COS(PHIN-EPSI)
  53. 530       TPIRHO=TWOPI*RHO*CPE
  54. 540       REAL=REAL+COS(TPIRHO)
  55. 550       IMAG=IMAG+SIN(TPIRHO)
  56. 560     NEXT I
  57. 570     AF(THE)=SQR(REAL*REAL+IMAG*IMAG)
  58. 580   Y(THE)=ABS(AF(THE))
  59. 590     Y(THE)=20*FN LOGTEN(Y(THE))
  60. 600     IF Y(THE)>YMAX THEN YMAX=Y(THE)
  61. 610     IF Y(THE)<YMIN THEN YMIN=Y(THE)
  62. 620   NEXT THE
  63. 630 YMAX=YMAX-YMIN
  64. 640 RETURN
  65. 650 '
  66. 660 PRINT"PHASE SHIFTS FOR EACH ELEMENTS ARE :-"
  67. 670 FOR I=1 TO N
  68. 680   PHIN=2*PI*I/N
  69. 690   ALPN=-2*PI*SIN(THE0)*COS(PHI0-PHIN)
  70. 700   ALPN=ALPN*180/PI
  71. 710   PRINT "ALPHA(";I;:PRINT USING ") = ####.##";ALPN
  72. 720 NEXT I
  73. 730 RETURN
  74. 740 SCREEN 2,0:CLS
  75. 750 VIEW (10,2)-(400,164),,1
  76. 760 WINDOW (-YMAX,-YMAX)-(YMAX,YMAX)
  77. 770 CLS
  78. 780 '
  79. 790 CIRCLE (0,0),YMAX,1
  80. 800 CIRCLE (0,0),.75*YMAX,1
  81. 810 CIRCLE (0,0),.5*YMAX,1
  82. 820 CIRCLE (0,0),.25*YMAX,1
  83. 830 '
  84. 840 LINE (-YMAX,0)-(YMAX,0),1
  85. 850 LINE (0,YMAX)-(0,-YMAX),1
  86. 860 LINE (-.707*YMAX,.707*YMAX)-(.707*YMAX,-.707*YMAX),1
  87. 870 LINE (-.707*YMAX,-.707*YMAX)-(.707*YMAX,.707*YMAX),1
  88. 880 '
  89. 890 PSET (0,Y(0))
  90. 900 FOR TH=0 TO 360
  91. 910   XX=TH*PI/180
  92. 920   Y(TH)=Y(TH)-YMIN
  93. 930   Y=Y(TH)*COS(XX)
  94. 940   X=Y(TH)*SIN(XX)
  95. 950   LINE -(X,Y),2
  96. 960 NEXT TH
  97. 970 LOCATE 1,53:PRINT"      CIRCULAR ARRAY"
  98. 980 LOCATE 2,53:PRINT USING "No. OF ELEMENTS = ###";N
  99. 990 LOCATE 3,53:PRINT USING "Radius of array = ###.##";A
  100. 1000 LOCATE 5,53:PRINT USING "MAIN BEAM IN THETA = ###";THE0
  101. 1010 LOCATE 6,53:PRINT USING "MAIN BEAM IN PHI   = ###";PHI0
  102. 1020 LOCATE 11,53:PRINT USING"dB SCALE = ###.##";YMAX*.25;:PRINT" dB/div"
  103. 1030 LOCATE 12,53:PRINT"0 dB on largest circle"
  104. 1040 LOCATE 2,26:PRINT"0":LOCATE 20,25:PRINT"180"
  105. 1050 RETURN
  106. 1060 A$=INKEY$
  107. 1070 IF LEN(A$)<>2 THEN 1060
  108. 1080 ANS=ASC(MID$(A$,2,1))
  109. 1090 IF ANS=72 THEN L=L+.1
  110. 1100 IF ANS=80 THEN L=L-.1
  111. 1110 IF ANS=75 THEN L=L-1
  112. 1120 IF ANS=77 THEN L=L+1
  113. 1130 IF L<=0 THEN L=.1
  114. 1140 IF ANS=84 THEN 1160
  115. 1150 GOTO 1060
  116. 1160 T$="DO YOU WANT TO RUN AGAIN (Y/N)?":LC=25:GOSUB 1220
  117. 1170 AN$=INKEY$
  118. 1180 IF AN$="Y" OR AN$="y" THEN RUN
  119. 1190 IF AN$="N" OR AN$="n" THEN END
  120. 1200 GOTO 1160
  121. 1210 :
  122. 1220 LOCATE LC,(40-LEN(T$))/2+1:PRINT T$;:RETURN    'SUBROUTINE TO CENTRE TEXT
  123. 1230 END
  124. 1240 LOCATE 24,1:PRINT"TYPE <RETURN> TO CONTINUE...";:INPUT W:SCREEN 0,0
  125. 1250 PRINT"I'M D      OME CALCULATION.  PLEASE WAIT..."
  126. 1260 RETURN
  127. 1270 T$="   DO YOU WANT TO RUN THIS PROGRAM AGAIN (Y/N)? ":LC=23:GOSUB 1330
  128. 1280 AN$=INKEY$
  129. 1290 IF AN$="Y" OR AN$="y" THEN RUN
  130. 1300 IF AN$="N" OR AN$="n" THEN END
  131. 1310 GOTO 1270
  132. 1320 :
  133. 1330 LOCATE LC,1:PRINT T$:RETURN
  134.